public class 招式拆解I {
    public int dismantlingAction(String arr) {
        char[] s = arr.toCharArray();
        int n = s.length;
        int[] hash = new int[200];
        int left = 0;
        int ans = 0;
        for(int right = 0;right < n;right++) {
            char ch = s[right];
            // 如果有了重复子串
            if(++hash[ch] == 2) {
                // 左边开始收缩, 直到找到拥有两个字符的 hash 值, 并跳过该字符
                while (--hash[s[left]] != 1) {
                    left++;
                }
                left++;
            }
            // 更新最大值
            ans = Math.max(ans,right - left + 1);
        }
        return ans;
    }
}
